package orders.db;

import orders.Order;
import org.springframework.data.neo4j.repository.GraphRepository;

import java.util.List;

/**
 * @author XiaoDongLei
 * @Package com.vonzhou.springinaction.knights
 * @date 2018/4/1
 * @Description: 大多数Spring Data项目都具备的最棒的一项功能就是为Repository接口自动生成实现。
 *
 * 在本例中，OrderRepository扩展了GraphRepository，而后者又间接扩展了Repository接口。因此，Spring Data Neo4j将会在运行时创建OrderRepository的实现。
 *
 * 注意，GraphRepository使用Order进行了参数化，也就是这个Repository所要使用的实体类型。因为Neo4j要求图ID的类型为Long，因此在扩展GraphRepository的时候，没有必要再去指定ID类型。
 *
 * Spring Data Neo4j也通过遵循命名约定来定义查询方法。
 *
 * Spring Data Neo4j指定自定义查询，必须指定Cypher查询
 *
 */
public interface OrderRepository extends GraphRepository<Order> {

	List<Order> findByCustomer(String customer);

	List<Order> findByCustomerLike(String customer);

	List<Order> findByCustomerAndType(String customer, String type);

	List<Order> getByType(String type);

//	@Query("{customer:'Chuck Wagon'}")
//	List<Order> findChucksOrders();

}
